
################################################################
print("1. 数据类型")
# 1. 数据类型
v_int = 10
v_float = 3.14
v_bool = True
v_str = 'a' # 在python中单引号、双引号、三引号都表示字符串
# List，有序集合，类比于C语言中的数组，但它的长度是可变的，而且类型不要求必须一样
v_list = [v_int, v_float, v_bool, v_str] # 注意与C/C++的不同，必须是方括号
print(v_list)
# 通过下标访问指定位置的值
print(v_list[2])
# Tuple，和List基本一样，只不过不可变（不仅长度，其中的值也不可变）
v_tuple = (v_int, v_float, v_bool, v_str)
print(v_tuple)
# Dict，类似于C++中的unordered_map，用于根据key获取value，但是它不要求key类型必须一样，但是key通常是字符串或者整型
v_dict = {
    'a': 'bc',
    1: 23
}
print(v_dict)
# 可以通过“字典变量[key]的方式获取对应的值”
print(v_dict['a'], v_dict[1])
# Set，无序集合，类比于C++的unordered_set，用于存储独一无二的值，可以看成没有Value的Dict，key通常要求是字符串或整型
v_set = {1, 2, 'a', 'b'} # 使用方括号创建的是Set而非List
print(v_set)
# 可以从List创建Set，但是结果会去重
l = [1, 2, 1]
print(set(l), {1, 2, 1})

################################################################
print("2. 分支与循环")
# 2. 分支与循环
# 对于python，不通过{}约束作用域，而是通过对其的方式
if v_int > 5:
    print("larger than 5")
elif v_bool:
    print("True")
else:
    print("False")
# 通过while或for进行循环，通常使用for
print("while循环")
i = 1
while i < v_int:
    print(i)
    i = i + 1
# for遍历指定次数
print("for遍历指定次数")
# for i in range(v_int):
#     print(i)
for i in range(2, v_int, 2):
    print(i)
# 遍历集合List或Dict
print("遍历集合List或Dict")
for v in v_list:
    print(v)
# 遍历字典的所有key
print("遍历字典的所有key")
for d in v_dict:
    print(d)
# 遍历字典的所有value
print("遍历字典的所有value")
for d in v_dict.values():
    print(d)
# 同时遍历key和value
print("同时遍历key和value")
for item in v_dict.items():
    # item是一个tuple，只包含两个元素：(key, value)
    print(item[0], item[1])

################################################################
# 3. 函数
print("3. 函数")
# def 函数名(参数列表):
def arithmetic(x,y):
   result={
      "+":x+y,
      "-":x-y,
      "*":x*y,
      "/":x/y, # 注意，python中/不表示整除，//才表示整除
      "//":x // y
   }
   return result
print(arithmetic(10,20))


################################################################
# 4. 类
print("4. 类")
class Fruit:
    def __init__(self, name):
        """
        构造函数
        :param name: 水果的名称
        """
        self.name = name
    def grow(self):
        """
        输出对应水果生长
        """
        print(self.name + " grow")

apple = Fruit("apple")
apple.grow()
print(apple.name)


################################################################
# 5. 包
print("5. 包")
import util
util.my_print("hello world")
from util import my_print
my_print("hello world")